Matthias Clasen [Sat, 11 Apr 2020 18:58:15 +0000 (14:58 -0400)]
gtk: Port widgets away from gtk_get_current_ apis
Use the event controller equivalents where needed.
This commit covers the simple cases.
Matthias Clasen [Sat, 11 Apr 2020 16:40:21 +0000 (12:40 -0400)]
Add gtk_event_controller_get_current_event[_state]
For now these are private, to replace internal uses
of gtk_get_current_event[_state], but we may want to
make them public.
Matthias Clasen [Sat, 11 Apr 2020 17:10:20 +0000 (13:10 -0400)]
gtk: Just use current time for showing urls
We don't really have an event anywhere close in most
cases, and we already pass GDK_CURRENT_TIME in half
the cases anyway.
If we want to be serious about this, we need to pass
the event itself, since future focus-stealing protocols
may not rely on just a timestamp.
Matthias Clasen [Sat, 11 Apr 2020 17:09:45 +0000 (13:09 -0400)]
entrycompletion: Remove an unused field
No point in storing a device that is never used.
Matthias Clasen [Sat, 11 Apr 2020 21:16:11 +0000 (21:16 +0000)]
Merge branch 'matthiasc/for-master' into 'master'
broadway: Fix the build
See merge request GNOME/gtk!1670
Matthias Clasen [Sat, 11 Apr 2020 20:24:05 +0000 (16:24 -0400)]
broadway: Fix the build
We need to depend on gdkenum_h, since we are (indirectly)
including gdkenumtypes.h in the broadway server build.
Matthias Clasen [Sat, 11 Apr 2020 16:47:32 +0000 (16:47 +0000)]
Merge branch 'jjardon/more_licenses' into 'master'
gtk/gtkaboutdialog: Add some more very common licenses:
See merge request GNOME/gtk!1667
Javier Jardón [Sat, 11 Apr 2020 15:49:09 +0000 (16:49 +0100)]
gtk/gtkaboutdialog: Add some more very common licenses:
- BSD 3-Clause "New" or "Revised" license
- Apache License 2.0
- Mozilla Public License 2.0
Emmanuele Bassi [Sat, 11 Apr 2020 15:21:11 +0000 (15:21 +0000)]
Merge branch 'gsk-public-symbols' into 'master'
Install all headers with public symbols
Closes #2607
See merge request GNOME/gtk!1666
Matthias Clasen [Sat, 11 Apr 2020 15:12:22 +0000 (15:12 +0000)]
Merge branch 'action-docs' into 'master'
Action docs
See merge request GNOME/gtk!1665
Emmanuele Bassi [Sat, 11 Apr 2020 14:42:51 +0000 (15:42 +0100)]
Conditionally include the GSK broadway and vulkan symbols
In case GTK is built without these features.
Emmanuele Bassi [Sat, 11 Apr 2020 14:41:47 +0000 (15:41 +0100)]
Revert "Do not install GSK headers for missing backends"
This reverts commit
cd5cded430c37fcb57d0ecc03f8fdf2fdbe12c54.
The headers are public, but the symbols availability is conditional on
the GTK build.
Matthias Clasen [Sat, 11 Apr 2020 03:59:21 +0000 (23:59 -0400)]
Document actions
Matthias Clasen [Sat, 11 Apr 2020 01:13:38 +0000 (21:13 -0400)]
gdk: Small documentation fixes
Matthias Clasen [Sat, 11 Apr 2020 14:06:18 +0000 (10:06 -0400)]
testsuite: Make actions test order-independent
We only want to check that the actions are what we
expect, not that they are registered in a particular
order.
Matthias Clasen [Fri, 10 Apr 2020 18:56:44 +0000 (18:56 +0000)]
Merge branch 'respect-window-cursors' into 'master'
window: Respect widget cursors
See merge request GNOME/gtk!1663
Matthias Clasen [Fri, 10 Apr 2020 18:35:02 +0000 (14:35 -0400)]
window: Respect widget cursors
gtk_widget_set_cursor can be used on a GtkWindow; we
should not blow away the result when temporarily installing
resize cursors.
Matthias Clasen [Fri, 10 Apr 2020 17:36:03 +0000 (17:36 +0000)]
Merge branch 'remove-style-reset' into 'master'
Remove gtk_style_context_reset_widgets
See merge request GNOME/gtk!1662
Matthias Clasen [Fri, 10 Apr 2020 16:45:28 +0000 (12:45 -0400)]
Remove gtk_style_context_reset_widgets
This should never be necessary to call from the outside.
Whenever we fail to update styles properly, it is a bug.
Matthias Clasen [Fri, 10 Apr 2020 16:43:05 +0000 (16:43 +0000)]
Merge branch 'reduce-style-context-use' into 'master'
Use gtk_widget_add/remove_css_class more
See merge request GNOME/gtk!1661
Matthias Clasen [Fri, 10 Apr 2020 16:08:16 +0000 (12:08 -0400)]
Use gtk_widget_add/remove_css_class more
Replace most uses of gtk_style_context_add/remove_class
by the new APIs. The only remaining uses of the old API
are in save/restore situations.
Matthias Clasen [Fri, 10 Apr 2020 13:27:07 +0000 (13:27 +0000)]
Merge branch 'fix-accel-length' into 'master'
accelgroup: Fix an invalid write
Closes #2602
See merge request GNOME/gtk!1660
Matthias Clasen [Fri, 10 Apr 2020 12:24:03 +0000 (08:24 -0400)]
accelgroup: Fix an invalid write
This was lost by accident in
d110fddbce14d13c.
Fixes: #2602
Piotr Drąg [Fri, 10 Apr 2020 11:56:58 +0000 (13:56 +0200)]
Update POTFILES.in and POTFILES.skip
Matthias Clasen [Fri, 10 Apr 2020 04:17:37 +0000 (04:17 +0000)]
Merge branch 'fix-radiobuttons' into 'master'
radiobutton: Fix selection on focus-in
Closes #2326
See merge request GNOME/gtk!1658
Matthias Clasen [Fri, 10 Apr 2020 04:17:15 +0000 (04:17 +0000)]
Merge branch 'popover-initial-focus' into 'master'
Popover initial focus
See merge request GNOME/gtk!1657
Matthias Clasen [Fri, 10 Apr 2020 02:38:30 +0000 (22:38 -0400)]
radiobutton: Fix selection on focus-in
We need to unselect the previously selected button
to preserve radioness.
Fixes: #2326
Matthias Clasen [Fri, 10 Apr 2020 02:22:28 +0000 (22:22 -0400)]
modelbutton: Catch focus-in more carefully
We need to unset the propagation limit on the focus
controller, else we miss the focus-in when the focus
enters the popover upon initial popup, when it comes
from the parent button.
Matthias Clasen [Fri, 10 Apr 2020 01:41:02 +0000 (21:41 -0400)]
popovermenu: Remove debug spew
Matthias Clasen [Fri, 10 Apr 2020 01:34:49 +0000 (01:34 +0000)]
Merge branch 'label-double-focus' into 'master'
Avoid double focus in labels
Closes #135
See merge request GNOME/gtk!1656
Matthias Clasen [Fri, 10 Apr 2020 01:21:25 +0000 (01:21 +0000)]
Merge branch 'scale-button-double-focus' into 'master'
scalebutton: Don't derive from GtkButton
See merge request GNOME/gtk!1655
Matthias Clasen [Fri, 10 Apr 2020 01:18:01 +0000 (21:18 -0400)]
Adwaita: Don't render focus around labels with links
This avoids the 'double outline' problem for labels
with links.
Fixes: #135
Matthias Clasen [Fri, 10 Apr 2020 01:15:30 +0000 (21:15 -0400)]
label: Improve link styling
Add a .link style class on labels that contain links,
so we can avoid the focus outline around the label
when individual links are focused, and use the link
node when rendering the focus on links.
Matthias Clasen [Fri, 10 Apr 2020 00:24:23 +0000 (20:24 -0400)]
scalebutton: Don't derive from GtkButton
Make GtkScaleButton a widget that has a toggle button
as a child, just like all the other button widgets now.
The immediate benefit of this arrangement is to avoid
the "double focus" problem when we pop up the popup.
Update accessible, demos and tests to match.
Matthias Clasen [Fri, 10 Apr 2020 00:26:53 +0000 (00:26 +0000)]
Merge branch 'wip/matthiasc/can-focus' into 'master'
Implement new focus behavior
See merge request GNOME/gtk!1652
Matthias Clasen [Thu, 9 Apr 2020 21:29:48 +0000 (17:29 -0400)]
Mention focus changes in the migration guide
Matthias Clasen [Thu, 9 Apr 2020 21:17:58 +0000 (17:17 -0400)]
Small documentation tweaks
Update the docs for GtkWidget:can-focus and :focus-on-click.
Matthias Clasen [Thu, 9 Apr 2020 16:03:23 +0000 (12:03 -0400)]
Move focus to the parent if a popover is dismissed
This is better than just dropping focus altogether,
and is expected behavior in most cases.
Matthias Clasen [Thu, 9 Apr 2020 04:41:30 +0000 (00:41 -0400)]
Update a11y test results
Matthias Clasen [Thu, 9 Apr 2020 21:50:02 +0000 (17:50 -0400)]
a11y: Fix focusable state
The :can-focus property is no longer very useful to
give an indication of what is focusable, since it is
TRUE for almost all widgets now. Patch things up
to by looking at known widget types.
Matthias Clasen [Thu, 9 Apr 2020 04:08:48 +0000 (00:08 -0400)]
Fix the tools tests to not set can-focus
Matthias Clasen [Thu, 9 Apr 2020 03:22:13 +0000 (23:22 -0400)]
Disable focus-chain test that depends on the environment
The color editor shows a color picker button only if it
finds a suitable implementation, which it does not in ci.
So disable the focus-chain test for page 3.
Matthias Clasen [Wed, 8 Apr 2020 12:08:46 +0000 (08:08 -0400)]
color editor: Make the sample non-focusable again
This is one of the situations, where can-focus can still
be used to tweak focus behavior of leaf widgets. Color
swatches are focusable by default to allow selecting colors
with the keyboard. But when used as color samples, they
should not take focus.
Matthias Clasen [Wed, 8 Apr 2020 12:01:58 +0000 (08:01 -0400)]
Remove focusable-container tests
Like the previous commit, these tests were relying
on setting :can-focus to make an unsuspecting container
focusable, which does not work anymore.
Matthias Clasen [Wed, 8 Apr 2020 11:59:23 +0000 (07:59 -0400)]
Remove the focus test
This test was expecting to make existing widgets like
GtkBox focusable by setting :can-focus. That just doesn't
work anymore.
The focus chain testing that is done here is already
better covered by test-focus-chain, so lets just remove this.
Matthias Clasen [Thu, 9 Apr 2020 02:13:06 +0000 (22:13 -0400)]
Fix up focus chain result
The notebook grab_focus change in the previous commit made
backwards tabbing work as expected, and thereby changed the
output of one of the focus-chain tests.
Matthias Clasen [Wed, 8 Apr 2020 11:43:28 +0000 (07:43 -0400)]
Reinstate expected focus behavior
After the :can-focus change in the previous commit, widgets
need to set suitable focus and grab_focus implementations
to implement the desired focus behavior.
This commit does that for all widgets.
Matthias Clasen [Wed, 8 Apr 2020 11:40:48 +0000 (07:40 -0400)]
Change the default value of GtkWidget:can-focus
Make widgets can-focus by default, and change the semantics
of can-focus to be recursive . If it is set to FALSE, focus
can not enter the widget or its descendents at all anymore.
This commit temporarily breaks focus behavior of widgets
that did not expect to receive focus.
Matthias Clasen [Wed, 8 Apr 2020 11:42:27 +0000 (07:42 -0400)]
widget: Add common focus vfunc implementations
Privately export a number of implementations for the focus
and grab_focus vfuncs that cover many common cases.
Matthias Clasen [Wed, 8 Apr 2020 11:34:38 +0000 (07:34 -0400)]
gizmo: Allow passing changing focus behavior
We need this in popovers. Maybe it could be done better
by defining one-off custom widgets.
Matthias Clasen [Fri, 3 Apr 2020 00:51:31 +0000 (20:51 -0400)]
widget: Make the :has-focus property readonly
The only place where this should be set is when making
a widget the focus-widget of a window. We still keep
the property around in readonly form, since there are
a few places where we rely on property notification
for it.
Matthias Clasen [Fri, 3 Apr 2020 00:50:35 +0000 (20:50 -0400)]
testsuite: Stop setting :has-focus
This is not necessary, whenever we want to set the initial
focus in a ui file, we can set GtkWindow:focus-widget.
Matthias Clasen [Fri, 3 Apr 2020 00:30:17 +0000 (20:30 -0400)]
widget: Drop the :is-focus property
This property doesn't carry any new information compared
to GtkWindow:focus-widget. We still keep the gtk_widget_is_focus
getter, as a convenient shortcut.
Matthias Clasen [Mon, 30 Mar 2020 02:11:38 +0000 (22:11 -0400)]
reftests: Stop using can-focus
Matthias Clasen [Mon, 30 Mar 2020 01:50:31 +0000 (21:50 -0400)]
a11y tests: Stop using can-focus
Matthias Clasen [Mon, 30 Mar 2020 01:14:23 +0000 (21:14 -0400)]
testsuite: Stop using can-focus
Matthias Clasen [Mon, 30 Mar 2020 01:05:38 +0000 (21:05 -0400)]
inspector: Drop more uses of can-focus
Matthias Clasen [Mon, 30 Mar 2020 00:34:49 +0000 (20:34 -0400)]
inspector: Remove can-focus from ui files
Matthias Clasen [Mon, 30 Mar 2020 00:09:33 +0000 (20:09 -0400)]
Stop setting can-focus in ui files
None of these settings are necessary.
Matthias Clasen [Sun, 29 Mar 2020 19:26:56 +0000 (15:26 -0400)]
window: Make set_focus equal to grab_focus
Make gtk_window_set_focus call gtk_widget_grab_focus internally.
This means that set_focus can now end up putting the focus on
a child of the passed-in widget, and makes the focus-widget
property work for setting initial focus to (the child of) an
entry in a ui file.
Matthias Clasen [Sun, 29 Mar 2020 19:19:23 +0000 (15:19 -0400)]
root: Reorganize focus handling
Make :focus-widget a GtkWindow property and add vfuncs
to the GtkRoot interface instead of the property.
Matthias Clasen [Sat, 4 Apr 2020 05:25:31 +0000 (01:25 -0400)]
Add more focus chain tests
Test page 2 and 3 of widget-factory as well, and try other directions.
Matthias Clasen [Wed, 8 Apr 2020 21:32:48 +0000 (17:32 -0400)]
Fix running focus-chain tests in ci
The widget-factory ui files require geettings
(for the color chooser), so set GSETTINGS_SCHEMA_DIR.
Matthias Clasen [Wed, 8 Apr 2020 11:48:35 +0000 (07:48 -0400)]
notbook: Fix a bug in focus handling
After the header widget was introduced, focus would get
stuck in a loop between actions and tabs.
This could be seen in the notebook on page 3 of
widget-factory.
Matthias Clasen [Thu, 9 Apr 2020 18:11:18 +0000 (14:11 -0400)]
coloreditor: Draw a focus around the color plane
Not doing it was just an oversight.
Matthias Clasen [Thu, 9 Apr 2020 18:10:23 +0000 (14:10 -0400)]
colorplane: Set a css name
Every widget should have one.
Matthias Clasen [Wed, 8 Apr 2020 23:59:02 +0000 (23:59 +0000)]
Merge branch 'wip/xdg-popup-move' into 'master'
Wayland popup moving
See merge request GNOME/gtk!1017
Jonas Ådahl [Tue, 17 Mar 2020 14:30:25 +0000 (15:30 +0100)]
wayland: Move transient-for field to GdkWaylandToplevel
A toplevel will only ever be transient-for to another toplevel, and only
a toplevel will ever be transient-for, so move the field into the
GdkWaylandToplevel, and make it a pointer to another GdkWaylandToplevel.
Jonas Ådahl [Tue, 17 Mar 2020 14:28:14 +0000 (15:28 +0100)]
wayland: Add surface to toplevel list only if toplevel
It was using another check (has parent) to do this, but now we have a
much more obvious way of creating surfaces, so we can use the type
directly.
Jonas Ådahl [Tue, 17 Mar 2020 14:26:58 +0000 (15:26 +0100)]
wayland: Remove own pointer to the popup parent
It's there already as the GdkSurface::parent, no need to duplicate.
Jonas Ådahl [Tue, 17 Mar 2020 14:23:57 +0000 (15:23 +0100)]
wayland: Move toplevel/popup/drag surface definitions higher up
We them up there, so that code higher up compared to where they are
defined now can make use of them. Also add a few macros for type
checking and casting.
Jonas Ådahl [Sun, 16 Feb 2020 19:09:42 +0000 (20:09 +0100)]
wayland: Move popups with xdg_popup.reposition
The third version of xdg-shell introduces support for explicit popup
repositioning. If available, make use of this to implement popup
repositioning.
Note that this does *NOT* include atomic parent-child state
synchronization. For that,
https://gitlab.freedesktop.org/wayland/wayland-protocols/issues/13 will
be needed.
This currently uses my own fork of wayland-protocols which adds meson
support, so that we can use it as a subproject. Eventually when
wayland-protocols' meson support lands upstream, we should change it to
point there.
Silence some meson warnings while at it to make CI happy.
This also bumps the glib requirement, since g_warning_once() is used.
Jonas Ådahl [Wed, 8 Apr 2020 20:43:29 +0000 (22:43 +0200)]
build: Change wrap revisions to use master instead of origin/master
Using origin/master crashes meson.
Jakub Steiner [Wed, 8 Apr 2020 21:12:57 +0000 (21:12 +0000)]
Merge branch 'Gtk4_blue_focus_rings' into 'master'
Blue outlines / focus rings
See merge request GNOME/gtk!1629
Frederik F [Wed, 8 Apr 2020 21:12:57 +0000 (21:12 +0000)]
Blue outlines / focus rings
- introduce two new colors: $focus_border_color for focused / outlined elements and $_coloured_focus_border_color for focused / outlined elements with a colored background color, like suggested/destructive buttons or selected elements
- set outline / focus color, offset and style accordingly for all widgets
- adapt entry focus color
Matthias Clasen [Wed, 8 Apr 2020 20:55:14 +0000 (20:55 +0000)]
Merge branch 'render-node-types' into 'master'
Turn GskRenderNode into a fundamental type
See merge request GNOME/gtk!1649
Emmanuele Bassi [Wed, 8 Apr 2020 15:17:08 +0000 (16:17 +0100)]
Properly annotate the render node constructors
Now that the GskRenderNode subclasses are recognised as proper
sub-types, we can annotate the constructors with their type. The C API
remains the same.
Emmanuele Bassi [Wed, 8 Apr 2020 14:34:11 +0000 (15:34 +0100)]
Add get_type() functions for GskRenderNode subclasses
The introspection scanner tries to match a type name with a get_type()
function, in order to correctly identify a type as a class.
If the function is not available, we have two choices:
- add some special case inside the introspection scanner, similar to
how GParamSpec subclasses are handled in GObject
- add a simple get_type() function
The latter is the simplest approach, and we don't need to change that
much, since we still register all render nodes at once.
Emmanuele Bassi [Wed, 8 Apr 2020 14:30:46 +0000 (15:30 +0100)]
Do not install GSK headers for missing backends
Broadway and Vulkan renderers are optional; if GTK hasn't been built
with their GSK renderers, we should not install their headers.
Emmanuele Bassi [Wed, 8 Apr 2020 14:26:14 +0000 (15:26 +0100)]
Improve the gtktypefuncs.inc generator
Remove the plug/socket exception, and add exceptions for non-X11
windowing systems.
Additionally, speed up the file generation by avoiding string
concatenation in Python.
Emmanuele Bassi [Tue, 7 Apr 2020 23:00:26 +0000 (00:00 +0100)]
Add missing transfer annotation
Emmanuele Bassi [Tue, 7 Apr 2020 22:33:54 +0000 (23:33 +0100)]
Turn GskRenderNode into a derivable type
Language bindings—especially ones based on introspection—cannot deal
with custom type hiearchies. Luckily for us, GType has a derivable type
with low overhead: GTypeInstance.
By turning GskRenderNode into a GTypeInstance, and creating derived
types for each class of node, we can provide an introspectable API to
our non-C API consumers, with no functional change to the C API itself.
Emmanuele Bassi [Tue, 7 Apr 2020 22:32:22 +0000 (23:32 +0100)]
Add macro for exported variables
The logic is based on the similar macro in GLib, but with the
appropriate GDK symbols.
Emmanuele Bassi [Wed, 8 Apr 2020 12:17:50 +0000 (12:17 +0000)]
Merge branch 'ci-meson-bump' into 'master'
ci: Update the version of Meson in our Docker image
See merge request GNOME/gtk!1651
Emmanuele Bassi [Wed, 8 Apr 2020 11:26:58 +0000 (12:26 +0100)]
ci: Update the version of Meson in our Docker image
Needed for !1017.
Matthias Clasen [Tue, 7 Apr 2020 20:30:43 +0000 (20:30 +0000)]
Merge branch 'matthiasc/for-master' into 'master'
Remove an unused backend includes
See merge request GNOME/gtk!1648
Matthias Clasen [Tue, 7 Apr 2020 19:27:51 +0000 (19:27 +0000)]
Merge branch 'imcontextsimple-drop-ifdefs' into 'master'
impcontextsimple: Drop ifdef'ed platform dependencies
See merge request GNOME/gtk!1647
Matthias Clasen [Tue, 7 Apr 2020 19:01:33 +0000 (15:01 -0400)]
Remove an unused backend includes
These includes are just leftovers.
Every time where we do an #ifdef GDK_WINDOWING... in gtk/,
something went wrong. Don't do it needlessly.
Matthias Clasen [Tue, 7 Apr 2020 18:54:04 +0000 (14:54 -0400)]
impcontextsimple: Drop ifdef'ed platform dependencies
The proper way to do this would be to adapt the tables
to have the right data for the platform. Since 4.0 is
a new start in many ways, lets clean this up.
Matthias Clasen [Tue, 7 Apr 2020 18:18:55 +0000 (18:18 +0000)]
Merge branch 'private-x11-types' into 'master'
Do not parse all GDK-X11 source files
See merge request GNOME/gtk!1646
Emmanuele Bassi [Tue, 7 Apr 2020 17:12:58 +0000 (18:12 +0100)]
Rename gdkx11keys.h
The header is now private, so it should follow the same naming scheme
for private GDK-X11 headers.
Emmanuele Bassi [Tue, 7 Apr 2020 17:10:01 +0000 (18:10 +0100)]
Hide GdkX11Keymap's GType function
It's not a public object.
Emmanuele Bassi [Tue, 7 Apr 2020 15:46:12 +0000 (16:46 +0100)]
Do not parse all GDK-X11 source files
We don't need all of them, only the ones that contain public API. This
allows us to reduce the chance of a stray symbol getting incorrectly
added to the introspection data.
Matthias Clasen [Tue, 7 Apr 2020 04:15:33 +0000 (04:15 +0000)]
Merge branch 'attribute-docs' into 'master'
entry: Document buildable support
See merge request GNOME/gtk!1643
Matthias Clasen [Tue, 7 Apr 2020 03:29:47 +0000 (23:29 -0400)]
entry: Document buildable support
Matthias Clasen [Tue, 7 Apr 2020 02:13:10 +0000 (22:13 -0400)]
entry: Add <attributes> support
Make entries support the same <attributes> syntax
as labels.
Closes: #1335
Matthias Clasen [Tue, 7 Apr 2020 01:46:12 +0000 (21:46 -0400)]
Move label attribute parser code
We want to reuse the parser for <attributes> in several
widgets, so move it to a shared place.
Matthias Clasen [Mon, 6 Apr 2020 23:59:33 +0000 (23:59 +0000)]
Merge branch 'cross-postinstall' into 'master'
meson: Don't execute post-install.py if cross compiling
See merge request GNOME/gtk!1636
Matthias Clasen [Mon, 6 Apr 2020 23:44:32 +0000 (23:44 +0000)]
Merge branch 'fix-event-match' into 'master'
shortcuttrigger: Don't trigger on key releases
See merge request GNOME/gtk!1642
Matthias Clasen [Mon, 6 Apr 2020 23:30:26 +0000 (23:30 +0000)]
Merge branch 'wip/chergert/fix-shortcut-param-order' into 'master'
widget: fix parameter ordering to match implementation
Closes #2586
See merge request GNOME/gtk!1641